import { http } from '@/utils/http/axios';

const baseUrl = '/login';
interface ILoginByCellphoneParams {
  phone: string;
  password: string;
}

interface ILoginByEmailParams {
  email: string;
  password: string;
}

// 登录相关接口
export default {
  /**
   * @description 手机登录
   * @description 可选参数：
   * @description countrycode: 国家码，用于国外手机号登录，例如美国传入：1;md5_password: md5 加密后的密码,传入后 password 参数将失效;captcha: 验证码,使用 /captcha/sent接口传入手机号获取验证码,调用此接口传入验证码,可使用验证码登录,传入后 password 参数将失效
   * @param phone 必选参数
   * @param password 必选参数
   */
  loginByCellphone: ({ phone, password }: ILoginByCellphoneParams) =>
    http.request(
      {
        url: `${baseUrl}/cellphone`,
        method: 'GET',
        params: { phone, password },
      },
      { isTransformResponse: false }
    ),
  /**
   * @description 邮箱登录
   * @description 可选参数 :
   * @description md5_password: md5 加密后的密码,传入后 password 将失效
   * @param email 必选参数
   * @param password 必选参数
   */
  loginByEmail: ({ email, password }: ILoginByEmailParams) =>
    http.request(
      {
        url: `${baseUrl}`,
        method: 'GET',
        params: { email, password },
      },
      { isTransformResponse: false }
    ),
  /**
   * @description 二维码key生成接口
   */
  qrKey: () => http.request({ url: `${baseUrl}/qr/key`, method: 'GET' }, { isReturnNativeResponse: false, isTransformResponse: false }),
  /**
   * @description 二维码生成接口
   * @param qrKey
   */
  qrCreate: (qrKey: string) =>
    http.request(
      {
        url: `${baseUrl}/qr/create`,
        method: 'GET',
        params: { key: qrKey },
      },
      { isTransformResponse: false }
    ),

  /**
   * @description 二维码检测扫码状态接口
   * @description 说明: 轮询此接口可获取二维码扫码状态,800 为二维码过期,801 为等待扫码,802 为待确认,803 为授权登录成功(803 状态码下会返回 cookies),如扫码后返回502,则需加上noCookie参数,如&noCookie=true
   */
  qrCheck: (qrKey: string) => http.get({ url: `${baseUrl}/qr/check`, params: { key: qrKey } }, { isTransformResponse: false }),

  /**
   * @description 发送验证码
   * @param phone 必选参数 手机号码
   * @param ctcode 可选参数,国家区号,默认 86 即中国
   */
  captchaSent: (phone: string, ctcode = '86') => http.get({ url: `/captcha/sent`, params: { phone, ctcode } }, { isTransformResponse: false }),

  /**
   * @description 发送验证码
   * @param phone 必选参数 手机号码
   * @param captcha 必选参数 验证码
   * @param ctcode 可选参数,国家区号,默认 86 即中国
   */
  captchaVerify: (phone: string, captcha: string, ctcode = '86') =>
    http.get({ url: `/captcha/verify`, params: { phone, captcha, ctcode } }, { isTransformResponse: false }),
};
